﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.Collections.Generic;
using System.IO;
using BUS;
using DTO;
using System.Text;
using System.Net.Configuration;
using System.Net;
using System.Net.Mail;

namespace Cucre
{
    public partial class quanlythanhvien : System.Web.UI.Page
    {
        DataClasses1DataContext Data = new DataClasses1DataContext();
        bool isSearch = false;
        protected override void OnPreInit(EventArgs e)
        {
            base.OnPreInit(e);
            string path = Server.MapPath("theme.txt");
            StreamReader SR = new StreamReader(path);
            string nameTheme = SR.ReadLine();
            SR.Close();
            base.OnPreInit(e);
            if (Session["MyTheme"] == null)
            {
                Session.Add("MyTheme", nameTheme);
                Page.Theme = (string)Session["MyTheme"];
            }
            else
            {
                Page.Theme = (string)Session["MyTheme"];
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ThanhVienDataBind();
            }
        }

        public void ThanhVienDataBind()
        {
            if (!isSearch)
            {
                var query = from member in Data.MEMBERs
                            where ((member.MEMBER_STYLE == 3) && (member.ACCOUNT.VISIBLE == true))
                            select new
                            {
                                IDMEMBER = member.IDMEMBER,
                                USERNAME = member.ACCOUNT.USERNAME,
                                NAME = member.ACCOUNT.FULLNAME,
                                EMAIL = member.ACCOUNT.EMAIL,
                                ADDRESS = member.ACCOUNT.ADDRESS
                            };
                DanhSachThanhVien_GridView.DataSource = query;
                DanhSachThanhVien_GridView.DataBind();
            }
            else
            {
                string stringSearch = ChuanHoaChuoi(txtSearchThanhVien.Text.Trim());
                var query = from member in Data.MEMBERs
                            where ((member.MEMBER_STYLE == 3) && (member.ACCOUNT.VISIBLE == true)&&
                            (member.ACCOUNT.FULLNAME.ToLower().Contains(stringSearch) || member.ACCOUNT.USERNAME.ToLower().Contains(stringSearch)||member.ACCOUNT.ADDRESS.ToLower().Contains(stringSearch)))
                            select new
                            {
                                IDMEMBER = member.IDMEMBER,
                                USERNAME = member.ACCOUNT.USERNAME,
                                NAME = member.ACCOUNT.FULLNAME,
                                EMAIL = member.ACCOUNT.EMAIL,
                                ADDRESS = member.ACCOUNT.ADDRESS
                            };
                DanhSachThanhVien_GridView.DataSource = query;
                DanhSachThanhVien_GridView.DataBind();
            }
            if (DanhSachThanhVien_GridView.Rows.Count <= 0)
                ResultDataBound.Text = "Không Tìm Thấy Thành Viên Nào";
            else
                ResultDataBound.Text = "";
        }

        protected void Register_bt_Click(object sender, EventArgs e)
        {
                
            try
            {
                if (Email_tb.Text.Trim() == null || Email_tb.Text.Trim() == ""||Address_tb.Text.Trim()==""||CMDN_tb.Text.Trim()==""||FullName_tb.Text.Trim()==""
                    ||Username_tb.Text.Trim()==""||NumberPhone_tb.Text.Trim()=="")
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Bạn Chưa Nhập Đầy Đủ Thông Tin Vào. Vui Lòng Kiểm Tra Lại !!!!!!')", true);
                    return;
                }

                if (Email_tb.Text.Contains('.') == false || Email_tb.Text.Contains('@') == false)
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Email Không Hợp Lệ.Vui Lòng Kiểm Tra Lại')", true);
                    return;
                }
                if (AccountBUS.CheckIsExisting(Username_tb.Text.Trim()))
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Username đã tồn tại.Vui Lòng Kiểm Tra Lại')", true);
                    return;
                }

                MEMBER newMember = new MEMBER();
                newMember.ACCOUNT = new ACCOUNT();
                newMember.ACCOUNT.ADDRESS = Address_tb.Text.Trim();
                newMember.ACCOUNT.CMND = CMDN_tb.Text.Trim();
                newMember.ACCOUNT.EMAIL = Email_tb.Text.Trim();
                newMember.ACCOUNT.FULLNAME = FullName_tb.Text.Trim();
                newMember.ACCOUNT.USERNAME = Username_tb.Text.Trim();
                newMember.ACCOUNT.PHONE_NUMBER = NumberPhone_tb.Text.Trim();
                string pass = "";
                Random random = new Random();
                for (int i = 0; i < 6; ++i)
                {
                    pass += random.Next(0, 9).ToString();
                }
                newMember.ACCOUNT.PASSWORD = pass;
                bool Result=MemberBUS.insertMember(newMember);
                if (Result)
                {
                    ThanhVienDataBind();
                    MailMessage msg = new MailMessage();
                    msg.IsBodyHtml = true;
                    msg.From = new MailAddress("muare@yahoo.com", "Admin muare.vn");
                    msg.To.Add(new MailAddress(Email_tb.Text.Trim()));
                    msg.Subject = "Mật Khẩu Đăng Nhập Vào Muare.vn";
                    msg.Body = "hi bạn .bạn đã đăng kí thành viên thành công với trang Muare của chúng tôi với tên đăng nhập là : " + Username_tb.Text.Trim() + " Mật khẩu của bạn là: " + pass;
                    // Send the message
                    SmtpClient client = new SmtpClient("smtp.mail.yahoo.com.vn", 25);
                    client.Credentials = new NetworkCredential("muare", "admin08");
                    client.EnableSsl = false;
                    client.Send(msg);

                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Qúa Trình Thực Hiện Thành Công. Hệ Thống Sẽ Gửi Password Đăng Nhập về Email Bạn đã đăng kí')", true);
                }
                else
                {

                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Qúa Trình Thực Hiện Thất Bại. Vui Lòng Kiểm tra lại')", true);
                }
               }
            catch (Exception ex)
            {
                string message = "alert('" + ex.Message + "')";
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", message, true);
            }
        }

        protected void Delete_bt_Click(object sender, EventArgs e)
        {
                 
            if (DanhSachThanhVien_GridView.SelectedIndex >= 0)
            {
                int id = int.Parse(DanhSachThanhVien_GridView.Rows[DanhSachThanhVien_GridView.SelectedIndex].Cells[0].Text);
                bool Result=MemberBUS.DeleteMember(id);
                if (Result)
                {
                    ThanhVienDataBind();
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Qúa Trình Thực Hiện Thành Công')", true);
                }
                else
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Qúa Trình Thực Hiện Thất Bại. Vui Lòng Kiểm Tra Lại và Thử Lại Lần Nửa')", true);
                }
            }
            else
            {
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Bạn Chưa Chọn Thành Viên Muốn Xóa !!!! .Vui Lòng Kiểm Tra Lại')", true);
            }
        }

        protected void DanhSachThanhVien_GridView_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {
            DanhSachThanhVien_GridView.SelectedIndex = e.NewSelectedIndex;
            int id = int.Parse(DanhSachThanhVien_GridView.Rows[e.NewSelectedIndex].Cells[0].Text);
            MEMBER Member = MemberBUS.GetMember(id);
            Username_tb.Text = Member.ACCOUNT.USERNAME;
            FullName_tb.Text = Member.ACCOUNT.FULLNAME;
            Email_tb.Text = Member.ACCOUNT.EMAIL;
            NumberPhone_tb.Text = Member.ACCOUNT.PHONE_NUMBER;
            CMDN_tb.Text = Member.ACCOUNT.CMND;
            Address_tb.Text = Member.ACCOUNT.ADDRESS;
        }

        protected void DanhSachThanhVien_GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            DanhSachThanhVien_GridView.PageIndex = e.NewPageIndex;
            ThanhVienDataBind();
        }

        protected void DanhSachThanhVien_GridView_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            try
            {
                int id = int.Parse(DanhSachThanhVien_GridView.Rows[e.RowIndex].Cells[0].Text);
                bool Result=MemberBUS.DeleteMember(id);
                if (Result)
                {
                    ThanhVienDataBind();
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Bạn Vừa Xóa Thành Công 1 Thành Viên trong Danh Sách !!!')", true);
                }
                else
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Qúa Trình Thực Hiện Thất Bại. Vui Lòng Kiểm Tra Lại và Thử Lại Lần Nửa')", true);
                }
            }
            catch
            {
                e.Cancel = true;
            }
        }

        protected void ShowAll_Click(object sender, EventArgs e)
        {
            isSearch = false;
            ThanhVienDataBind();
        }

        protected void btSearchThanhVien_Click(object sender, EventArgs e)
        {
            if (txtSearchThanhVien.Text.Trim() == "")
                return;
            isSearch = true;
            ThanhVienDataBind();
        }

        private static string ChuanHoaChuoi(string stringSearch)
        {
            for (int i = 0; i < stringSearch.Length - 1; ++i)
            {
                if ((stringSearch[i].CompareTo(' ') == 0) && (stringSearch[i + 1].CompareTo(' ') == 0))
                {
                    stringSearch.Remove(i, 1);
                    --i;
                }
            }
            return stringSearch.ToLower();
        }

        
    }
}
